#include "HidratadorMetadataClase.h"

namespace CapaIndices
{
		void HidratadorMetadataClase::hidratarDiscoARegistros(std::string NombreClase,list<Registro>* Resultado){
			MetadatosArchivo ArchMetad(NombreClase+".Metadata");
			MetadatosGrupo GrupMetad;
			MetadatosRegistro RegMetad;
			MetadatosAtributo AtribMetad("Linea",Cadena);
			//Metadatos de Archivo
			ArchMetad.TamanioBloque=4096*3;

			ArchMetad.MetadatosGrupo=&GrupMetad;
			GrupMetad.MetadatosRegistro=&RegMetad;
			RegMetad.MetadatosAtributos.push_back(AtribMetad);

			ArchivoRF ClaseDisco(NombreClase+".Metadata");

			Grupo& grp=ClaseDisco.LeerGrupo(ClaseDisco.PrimerGrupo());

			
			Atributo Atr;			
			list<string>* lista = new list<string>();
			for(list<Registro>::iterator it=grp.Registros.begin();
				it!=grp.Registros.end();++it){
					Registro* regResult = new Registro();

					Atr=(*it).Atributos.front();
					regResult->Atributos.push_back(Atr);

					Resultado->push_back(*regResult);

					//delete regResult;
			}
		}

		MetadataClase* HidratadorMetadataClase::hidratarDisco(std::string NombreClase){
			MetadatosArchivo ArchMetad(NombreClase+".Metadata");
			MetadatosGrupo GrupMetad;
			MetadatosRegistro RegMetad;
			MetadatosAtributo AtribMetad("Linea",Cadena);
			//Metadatos de Archivo
			ArchMetad.TamanioBloque=4096*3;

			ArchMetad.MetadatosGrupo=&GrupMetad;
			GrupMetad.MetadatosRegistro=&RegMetad;
			RegMetad.MetadatosAtributos.push_back(AtribMetad);

			ArchivoRF ClaseDisco(NombreClase+".Metadata");

			Grupo& grp=ClaseDisco.LeerGrupo(ClaseDisco.PrimerGrupo());
			
			Atributo Atr;
			list<string>* lista = new list<string>();
			for(list<Registro>::iterator it=grp.Registros.begin();
				it!=grp.Registros.end();++it){
					Atr=(*it).Atributos.front();
					lista->push_back(Atr.Valor);
			}

			return MetadataClase::hidratarDesdeLista(*lista);
		}
}
